package com.reverse.engineering.util.core.run.enums;

import com.reverse.engineering.util.core.run.bean.database.DatabasePropertiesInterface;
import com.reverse.engineering.util.core.run.bean.database.impl.DatabaseMysqlPropertiesInterfaceImpl;
import com.reverse.engineering.util.core.run.bean.database.impl.DatabaseOraclelPropertiesInterfaceImpl;

/**
 * 数据库类型枚举类
 * 
 * @author liu
 * @date 2020-11-22
 */
public enum DatabaseType {

    /** Mysql数据库 */
    MYSQL("mysql", 1, new DatabaseMysqlPropertiesInterfaceImpl(), "mysql"),
    /** Oracle数据库 */
    ORACLE("oracle", 2, new DatabaseOraclelPropertiesInterfaceImpl(), "oracle"),
    /** 公司(不可传复杂参数) */
    CORPORATION("corporation", 10, new DatabaseOraclelPropertiesInterfaceImpl(), "corporation"),
    /** 公司(可传复杂参数) */
    CORPORATION_VUE("corporationVue", 11, new DatabaseOraclelPropertiesInterfaceImpl(), "corporationVue");

    private DatabaseType(String name, int code, DatabasePropertiesInterface databaseProperties,
        String templateRootPath) {
        this.name = name;
        this.code = code;
        this.databaseProperties = databaseProperties;
        this.templateRootPath = templateRootPath;
    }

    /** 类型名称 */
    private String name;
    /** 类型代码 */
    private int code;
    /** 数据库属性 */
    private DatabasePropertiesInterface databaseProperties;
    /** 模板根目录 */
    private String templateRootPath;

    /**
     * 获取类型名称
     * 
     * @return
     */
    public String getName() {
        return name;
    }

    /**
     * 设置类型名称
     * 
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取类型代码
     * 
     * @return
     */
    public int getCode() {
        return code;
    }

    /**
     * 设置类型代码
     * 
     * @param code
     */
    public void setCode(int code) {
        this.code = code;
    }

    /**
     * 获取数据库属性
     * 
     * @return
     */
    public DatabasePropertiesInterface getDatabaseProperties() {
        return databaseProperties;
    }

    /**
     * 设置数据库属性
     * 
     * @param databaseProperties
     */
    public void setDatabaseProperties(DatabasePropertiesInterface databaseProperties) {
        this.databaseProperties = databaseProperties;
    }

    /**
     * 获取模板根目录
     * 
     * @return
     */
    public String getTemplateRootPath() {
        return templateRootPath;
    }

    /**
     * 设置模板根目录
     * 
     * @param templateRootPath
     */
    public void setTemplateRootPath(String templateRootPath) {
        this.templateRootPath = templateRootPath;
    }

}